datascienceschool/rpython 설치 및 실행

데이터 사이언스 스쿨에서는 분석 환경의 설치를 돕기 위해 datascienceschool/rpython라는 도커 이미지를 구현하여 도커 허브에 올려놓았다.

datascienceschool/rpython은 리눅스 환경에서 R 혹은 Python 을 사용하여 데이터 분석을 하는데 필요한 모든 소프트웨어 요소들을 포함하고 있기 때문에 별도의 복잡한 설치 과정 없이 바로 데이터 분석을 시작할 수 있다.

도커를 설치하고 사용하는 방법에 대해서는 다음 노트북을 참조한다.

[[school_notebook:e87bcccf2b6f4c1cae18fb3fdf7ed4a8]]

[[school_notebook:22cc3845d45f4dc7b27828294fce3c93]]

[[school_notebook:708e711429a646818b9dcbb581e0c10a]]

datascienceschool/rpython 다운로드

datascienceschool/rpython 도커 이미지를 다운로드 받아서 설치해가 위해서는 우선 도커 터미널(Docker Quickstart Terminal, 이하 도커 터미널로 부른다.)을 실행해야 한다.

Docker Toolbox가 정상적으로 설치된 경우, 도커 터미널을 실행하면 다음과 같은 화면이 뜰 것이다.

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com


user@joel-PC MINGW64 ~
$

이 화면에서 다음과 같이 입력한다. 이 때 가장 앞의 달러표시($)는 터미널의 프롬프트(prompt)를 뜻하는 것으로 사용자가 입력하는 것이 아니다.

$ docker pull datascienceschool/rpython:latest

이 명령을 실행하면 도커 이미지를 다운로드 받기 시작한다. 전체 이미지의 크기가 7G정도이므로 네트워크 상태에 따라 약 10분 ~ 20분이 소요될 수 있다. 다음과 같은 화면이 나타나면 다운로드가 완료된 것이다.

이미지를 정상적으로 다운로드 하였는지 확인하기 위해 다음과 같이 docker images 명령으로 현재 존재하는 도커 이미지 목록을 출력한다.

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED              SIZE
ubuntu                      latest              b549a9959a66        34 hours ago         188 MB
datascienceschool/rpython   latest              ce2aabd3c3d0        2 days ago           7.711 GB

목록에 datascienceschool/rpython 가 나타났다면 정상적으로 다운로드 된 것이다. 이 목록에서 ubuntu 이미지는 datascienceschool/rpython 이미지가 의존하고 있는 부모 이미지이므로 같이 다운로드 되었다.

가상 머신에 로그인

다음으로 ssh를 사용하여 윈도우즈에 설치된 Oracle VM VirtualBox 가상 머신에 로그인한다. 만약 리눅스에 바로 작업하고 있다면 이 부분은 필요하지 않다.

Docker Toolbox는 ssh 명령을 자체적으로 가지고 있으므로 추가적인 ssh 프로그램이 필요하지 않다. 다음과 같이 docker-machine ssh 명령으로 가상머신에 로그인한다.

$ docker-machine ssh

정상적으로 가상 머신에 로그인되었다면 다음과 같은 화면이 나타나고 프롬프트가 docker@default:~$ 로 바뀔 것이다. 여기에서 docker는 가상 머신 상의 사용자 이름을 나타내고 default는 가상 머신의 이름이다.

$ docker-machine ssh
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.10.3, build master : 625117e - Thu Mar 10 22:09:02 UTC 2016
Docker version 1.10.3, build 20f81dd
docker@default:~$

가상머신에 처음 로그인하면 로그인 배너(banner)에 도커를 뜻하는 고래 그림과 함께 boot2docker라는 표시가 나타난다. boot2docker는 이 가상머신에 설치된 리눅스를 뜻한다.

boot2docker는 리눅스 커널과 도커 서비스만을 가지는 최소한의 리눅스 운영 체제이다. Docker Toolbox가 설치하는 리눅스 가상 머신은 어차피 도커를 사용하여 대부분의 애플리케이션을 설치할 것이기 때문에 호스트 컴퓨터(여기에서는 가상 머신이다)에는 별다른 프로그램이 필요하지 않다. 따라서 호스트 컴퓨터(가상 머신)에 설치할 리눅스로 사이즈가 작은 boot2docker를 설치한 것이다.

datascienceschool/rpython 컨테이너 실행

이제 분석 환경을 담고 있는 datascienceschool/rpython 이미지를 실행해 보자. 실행 방식에는 두 가지가 있다.

첫째, 도커 컨테이너 안으로 다시 로그인하여 분석용 리눅스 시스템으로 사용하는 방법 둘째, 데몬(daemon) 서비스 모드로 시작하여 터미널 로그인은 하지 않고 Jupyter Notebook만 사용하는 방법

우선 첫번째 방법을 사용하여 도커 컨테이너 안으로 직접 로그인 해보자. 다음 명령을 실행한다. (마찬가지로 달러 기호까지는 프롬프트 부분이므로 사용자가 입력하는 부분이 아니다. 달러 기호 뒤의 명령어를 입력한다.)

docker@default:~$ docker run -it --name=rpython -p 8888:8888 datascienceschool/rpython

프롬프트가 다음과 같이 바뀌는 것을 볼 수 있다. 여기에서 dockeruser 는 도커 컨테이너안의 사용자 이름이고 306d4d3d002b는 도커 컨테이너 이름이다. 컨테이너 이름은 사용할 때마다 계속 달라질 수 있다.

dockeruser@306d4d3d002b:~$

자 이제 다시 정리해 보자. 여기가지 제대로 따라왔다면 여러분은

  • 여러분 실제 컴퓨터의 윈도우즈 운영체제 안의
  • Oracle VM VirtualBox 가상 머신의 boot2docker 운영체제 안의
  • 도커 datascienceschool/rpython 컨테이너의 우분투 리눅스 운영체제 안으로

들어온 것이다.

Jupyter Notebook 사용

ps 명령을 사용하여 이 컨테이너 안에서 무슨 프로세스가 가동되고 있는지 살펴보자

dockeruser@306d4d3d002b:~$ ps x
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /usr/bin/tini -- /bin/bash .docker-entrypoint.sh
    6 ?        S      0:00 /bin/bash .docker-entrypoint.sh
   10 ?        Ss     0:00 /home/dockeruser/anaconda2/bin/python /home/dockeruser/anaconda2/bin/supervisord --user=dockeruser
   11 ?        S      0:00 /bin/bash
   22 ?        S      0:00 /home/dockeruser/anaconda2/bin/python /home/dockeruser/anaconda2/bin/jupyter-notebook --port=8888 --no-browser --ip=0.0.0.0
   23 ?        Sl     0:00 /usr/lib/rstudio-server/bin/rserver
   55 ?        R+     0:00 ps x

위 프로세스 목록에서 jupyter-notebook 이라는 프로세스가 돌아가고 있는 것을 볼 수 있다. 우리가 분석에 사용하고자 하는 실제 환경이 바로 이 주피터 노트북(jupyter-notebook)이다.

주피터 노트북은 웹 브라우저에서 R/Python 등을 실행 시킬 수 있는 다중 언어 실행 환경이다. 웹 브라우저를 시작하고 다음 주소를 입력한다

만약 자신의 컴퓨터에서 만들어진 Oracle VM VirtualBox 가상 머신의 IP 주소가 192.168.99.100 이 아닌 경우에는 해당 주소를 사용한다.

접속 프로토콕이 http가 아닌 https이고 자체 인증서를 사용하고 있기 때문에 웹브라우저에서는 다음과 같이 보안 위험을 나타낼 것이다. 주피터 노트북은 자신의 컴퓨터가 바로 웹서버이므로 이 경고는 의미가 없다. 따라서 이를 무시하고 예외 추가를 실행한다. (웹브라우저에 따라 화면은 달라질 수 있다.)

보안 예외 추가를 하면 다음과 같이 로그인 암호를 물어본다. 현재 datascienceschool/rpython 이미지는 다음과 같은 사용자 아이디와 암호를 설정하고 있다.

  • 사용자 아이디: dockeruser
  • 암호 : dockeruserpass

정상적으로 로그인하면 다음과 같이 주피터 노트북 홈페이지가 나타난다.